﻿using System;
using System.Data;
using System.Windows.Forms;
using SiGeCoPre.Presupuesto_BL;
using SiGeCoPre.Presupuesto_Factory;
using SiGeCoPre.Presupuesto_Util;

namespace SiGeCoPre.Presupuesto_ViewGeneral
{
    /// <summary>
    /// Formulario para elegir clientes
    /// </summary>
    public partial class frmClientes : Form
    {
        static BLClientes createCliente = BLFactoryPresupuesto.createCliente();
        static int id;

        public frmClientes()
        {
            InitializeComponent();
        }

        private void frmClientes_Load(object sender, EventArgs e)
        {
            try
            {
                DataTable clientes = createCliente.getAllClientes();
                if (null != clientes)
                {
                    foreach (DataRow dr in clientes.Rows)
                    {
                        clbCliente.Items.Add(dr["Nombre"].ToString());
                    }
                }

                if (id != 0)
                {
                    string nombre = clientes.Select("id = " + id + "")[0]["Nombre"].ToString();

                    for (int i = 0; i < clbCliente.Items.Count; i++)
                    {
                        if (nombre.Equals(clbCliente.Items[i].ToString()))
                        {
                            clbCliente.SetItemChecked(i, true);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
            }
            
        }

        private void btnAsignar_Click(object sender, EventArgs e)
        {
            try
            {
                if (verificar())
                {
                    DataTable clientes = createCliente.getAllClientes();
                    id = Convert.ToInt16(clientes.Select("Nombre = '" + clbCliente.CheckedItems[0].ToString() + "'")[0]["id"].ToString());
                    this.Close();
                    this.Dispose();
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
            }
            
        }

        /// <summary>
        /// Intercambia el indice del cliente
        /// </summary>
        /// <returns>Devuelve el indice del cliente seleccionado</returns>
        public static int pasarId()
        {
            return id;
        }

        /// <summary>
        /// Carga un cliente
        /// </summary>
        /// <param name="idCliente">Determina el cliente a cargar</param>
        public void cargarId(int idCliente)
        {
            id = idCliente;
        }

        private bool verificar()
        {
            bool verificado = false;

            if (clbCliente.CheckedItems.Count != 1)
            {
                errorProvider1.SetError(clbCliente, "Seleccione un sólo Cliente");
            }
            else
            {
                errorProvider1.SetError(clbCliente, String.Empty);
                verificado = true;
            }

            return verificado;
        }
    }
}
